package mysql

import (
	"fmt"
	"hft/global"

	mysqlServer "gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"gorm.io/gorm/schema"
)

// 初始化mysql

func GormMysql() *gorm.DB {
	m := global.OC_CONFIG.Mysql

	if m.Dbname == "" {
		return nil
	}
	fmt.Println("mysql配置", m.Dsn())
	mysqlConfig := mysqlServer.Config{
		DSN:                       m.Dsn(), // DSN data source name
		DefaultStringSize:         191,     // string 类型字段的默认长度
		SkipInitializeWithVersion: false,   // 根据版本自动配置

	}
	fmt.Println(mysqlConfig)
	if db, err := gorm.Open(mysqlServer.New(mysqlConfig), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Warn),
		NamingStrategy: schema.NamingStrategy{
			TablePrefix:   global.OC_CONFIG.Mysql.Prefix, //全局表明前缀
			SingularTable: global.OC_CONFIG.Mysql.Singular,
		},
	}); err != nil {
		panic(err)
	} else {
		fmt.Println("mysql初始化成功", m.Dsn())
		db.InstanceSet("gorm:table_options", "ENGINE=InnoDB")
		sqlDB, _ := db.DB()
		sqlDB.SetMaxIdleConns(m.MaxIdleConns)
		sqlDB.SetMaxOpenConns(m.MaxOpenConns)
		return db
	}
}
